home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / MPW / GCC 1.37.1r15 / Manual / Info / gcc.info-9 < prev    next >
Encoding:
Text File  |  1990-03-14  |  49.2 KB  |  1,130 lines  |  [TEXT/MPS ]

  1. Info file gcc.info, produced by Makeinfo, -*- Text -*- from input
  2. file gcc.texinfo.
  3.  
  4. This file documents the use and the internals of the GNU compiler.
  5.  
  6. Copyright (C) 1988, 1989 Free Software Foundation, Inc.
  7.  
  8. Permission is granted to make and distribute verbatim copies of this
  9. manual provided the copyright notice and this permission notice are
  10. preserved on all copies.
  11.  
  12. Permission is granted to copy and distribute modified versions of
  13. this manual under the conditions for verbatim copying, provided also
  14. that the sections entitled ``GNU General Public License'' and
  15. ``Protect Your Freedom--Fight `Look And Feel''' are included exactly
  16. as in the original, and provided that the entire resulting derived
  17. work is distributed under the terms of a permission notice identical
  18. to this one.
  19.  
  20. Permission is granted to copy and distribute translations of this
  21. manual into another language, under the above conditions for modified
  22. versions, except that the sections entitled ``GNU General Public
  23. License'' and ``Protect Your Freedom--Fight `Look And Feel''' and
  24. this permission notice may be included in translations approved by
  25. the Free Software Foundation instead of in the original English.
  26.  
  27.  
  28. 
  29. File: gcc.info,  Node: Stack Layout,  Next: Library Names,  Prev: Register Classes,  Up: Machine Macros
  30.  
  31. Describing Stack Layout
  32. =======================
  33.  
  34. `STACK_GROWS_DOWNWARD'
  35.      Define this macro if pushing a word onto the stack moves the
  36.      stack pointer to a smaller address.
  37.  
  38.      When we say, ``define this macro if ...,'' it means that the
  39.      compiler checks this macro only with `#ifdef' so the precise
  40.      definition used does not matter.
  41.  
  42. `FRAME_GROWS_DOWNWARD'
  43.      Define this macro if the addresses of local variable slots are
  44.      at negative offsets from the frame pointer.
  45.  
  46. `STARTING_FRAME_OFFSET'
  47.      Offset from the frame pointer to the first local variable slot
  48.      to be allocated.
  49.  
  50.      If `FRAME_GROWS_DOWNWARD', the next slot's offset is found by
  51.      subtracting the length of the first slot from
  52.      `STARTING_FRAME_OFFSET'.  Otherwise, it is found by adding the
  53.      length of the first slot to the value `STARTING_FRAME_OFFSET'.
  54.  
  55. `PUSH_ROUNDING (NPUSHED)'
  56.      A C expression that is the number of bytes actually pushed onto
  57.      the stack when an instruction attempts to push NPUSHED bytes.
  58.  
  59.      If the target machine does not have a push instruction, do not
  60.      define this macro.  That directs GNU CC to use an alternate
  61.      strategy: to allocate the entire argument block and then store
  62.      the arguments into it.
  63.  
  64.      On some machines, the definition
  65.  
  66.           #define PUSH_ROUNDING(BYTES) (BYTES)
  67.  
  68.      will suffice.  But on other machines, instructions that appear
  69.      to push one byte actually push two bytes in an attempt to
  70.      maintain alignment.  Then the definition should be
  71.  
  72.           #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
  73.  
  74. `FIRST_PARM_OFFSET (FUNDECL)'
  75.      Offset from the argument pointer register to the first
  76.      argument's address.  On some machines it may depend on the data
  77.      type of the function.  (In the next version of GNU CC, the
  78.      argument will be changed to the function data type rather than
  79.      its declaration.)
  80.  
  81. `FIRST_PARM_CALLER_OFFSET (FUNDECL)'
  82.      Define this macro on machines where register parameters have
  83.      shadow locations on the stack, at addresses below the nominal
  84.      parameter.  This matters because certain arguments cannot be
  85.      passed on the stack.  On these machines, such arguments must be
  86.      stored into the shadow locations.
  87.  
  88.      This macro should expand into a C expression whose value is the
  89.      offset of the first parameter's shadow location from the nominal
  90.      stack pointer value.  (That value is itself computed by adding
  91.      the value of `STACK_POINTER_OFFSET' to the stack pointer
  92.      register.)
  93.  
  94. `REG_PARM_STACK_SPACE'
  95.      Define this macro if functions should assume that stack space
  96.      has been allocated for arguments even when their values are
  97.      passed in registers.
  98.  
  99.      The actual allocation of such space would be done either by the
  100.      call instruction or by the function prologue, or by defining
  101.      FIRST_PARM_CALLER_OFFSET.
  102.  
  103. `STACK_ARGS_ADJUST (SIZE)'
  104.      Define this macro if the machine requires padding on the stack
  105.      for certain function calls.  This is padding on a
  106.      per-function-call basis, not padding for individual arguments.
  107.  
  108.      The argument SIZE will be a C variable of type `struct arg_data'
  109.      which contains two fields, an integer named `constant' and an
  110.      RTX named `var'.  These together represent a size measured in
  111.      bytes which is the sum of the integer and the RTX.  Most of the
  112.      time `var' is 0, which means that the size is simply the integer.
  113.  
  114.      The definition should be a C statement or compound statement
  115.      which alters the variable supplied in whatever way you wish.
  116.  
  117.      Note that the value you leave in the variable `size' will
  118.      ultimately be rounded up to a multiple of `STACK_BOUNDARY' bits.
  119.  
  120.      This macro is not fully implemented for machines which have push
  121.      instructions (i.e., on which `PUSH_ROUNDING' is defined).
  122.  
  123. `RETURN_POPS_ARGS (FUNTYPE)'
  124.      A C expression that should be 1 if a function pops its own
  125.      arguments on returning, or 0 if the function pops no arguments
  126.      and the caller must therefore pop them all after the function
  127.      returns.
  128.  
  129.      FUNTYPE is a C variable whose value is a tree node that
  130.      describes the function in question.  Normally it is a node of
  131.      type `FUNCTION_TYPE' that describes the data type of the function.
  132.      From this it is possible to obtain the data types of the value
  133.      and arguments (if known).
  134.  
  135.      When a call to a library function is being considered, FUNTYPE
  136.      will contain an identifier node for the library function.  Thus,
  137.      if you need to distinguish among various library functions, you
  138.      can do so by their names.  Note that ``library function'' in
  139.      this context means a function used to perform arithmetic, whose
  140.      name is known specially in the compiler and was not mentioned in
  141.      the C code being compiled.
  142.  
  143.      On the Vax, all functions always pop their arguments, so the
  144.      definition of this macro is 1.  On the 68000, using the standard
  145.      calling convention, no functions pop their arguments, so the
  146.      value of the macro is always 0 in this case.  But an alternative
  147.      calling convention is available in which functions that take a
  148.      fixed number of arguments pop them but other functions (such as
  149.      `printf') pop nothing (the caller pops all).  When this
  150.      convention is in use, FUNTYPE is examined to determine whether a
  151.      function takes a fixed number of arguments.
  152.  
  153. `FUNCTION_VALUE (VALTYPE, FUNC)'
  154.      A C expression to create an RTX representing the place where a
  155.      function returns a value of data type VALTYPE.  VALTYPE is a
  156.      tree node representing a data type.  Write `TYPE_MODE (VALTYPE)'
  157.      to get the machine mode used to represent that type.  On many
  158.      machines, only the mode is relevant.  (Actually, on most
  159.      machines, scalar values are returned in the same place
  160.      regardless of mode).
  161.  
  162.      If the precise function being called is known, FUNC is a tree
  163.      node (`FUNCTION_DECL') for it; otherwise, FUNC is a null
  164.      pointer.  This makes it possible to use a different
  165.      value-returning convention for specific functions when all their
  166.      calls are known.
  167.  
  168. `FUNCTION_OUTGOING_VALUE (VALTYPE, FUNC)'
  169.      Define this macro if the target machine has ``register windows''
  170.      so that the register in which a function returns its value is
  171.      not the same as the one in which the caller sees the value.
  172.  
  173.      For such machines, `FUNCTION_VALUE' computes the register in
  174.      which the caller will see the value, and
  175.      `FUNCTION_OUTGOING_VALUE' should be defined in a similar fashion
  176.      to tell the function where to put the value.
  177.  
  178.      If `FUNCTION_OUTGOING_VALUE' is not defined, `FUNCTION_VALUE'
  179.      serves both purposes.
  180.  
  181. `RETURN_IN_MEMORY (TYPE)'
  182.      A C expression which can inhibit the returning of certain
  183.      function values in registers, based on the type of value.  A
  184.      nonzero value says to return the function value in memory, just
  185.      as large structures are always returned.  Here TYPE will be a C
  186.      expression of type `tree', representing the data type of the
  187.      value.
  188.  
  189.      Note that values of mode `BLKmode' are returned in memory
  190.      regardless of this macro.  Also, the option
  191.      `-fpcc-struct-return' takes effect regardless of this macro.  On
  192.      most systems, it is possible to leave the macro undefined; this
  193.      causes a default definition to be used, whose value is the
  194.      constant 0.
  195.  
  196. `LIBCALL_VALUE (MODE)'
  197.      A C expression to create an RTX representing the place where a
  198.      library function returns a value of mode MODE.  If the precise
  199.      function being called is known, FUNC is a tree node
  200.      (`FUNCTION_DECL') for it; otherwise, FUNC is a null pointer. 
  201.      This makes it possible to use a different value-returning
  202.      convention for specific functions when all their calls are known.
  203.  
  204.      Note that ``library function'' in this context means a compiler
  205.      support routine, used to perform arithmetic, whose name is known
  206.      specially by the compiler and was not mentioned in the C code
  207.      being compiled.
  208.  
  209. `FUNCTION_VALUE_REGNO_P (REGNO)'
  210.      A C expression that is nonzero if REGNO is the number of a hard
  211.      register in which the values of called function may come back.
  212.  
  213.      A register whose use for returning values is limited to serving
  214.      as the second of a pair (for a value of type `double', say) need
  215.      not be recognized by this macro.  So for most machines, this
  216.      definition suffices:
  217.  
  218.           #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
  219.  
  220.      If the machine has register windows, so that the caller and the
  221.      called function use different registers for the return value,
  222.      this macro should recognize only the caller's register numbers.
  223.  
  224. `FUNCTION_ARG (CUM, MODE, TYPE, NAMED)'
  225.      A C expression that controls whether a function argument is
  226.      passed in a register, and which register.
  227.  
  228.      The arguments are CUM, which summarizes all the previous
  229.      arguments; MODE, the machine mode of the argument; TYPE, the
  230.      data type of the argument as a tree node or 0 if that is not
  231.      known (which happens for C support library functions); and
  232.      NAMED, which is 1 for an ordinary argument and 0 for nameless
  233.      arguments that correspond to `...' in the called function's
  234.      prototype.
  235.  
  236.      The value of the expression should either be a `reg' RTX for the
  237.      hard register in which to pass the argument, or zero to pass the
  238.      argument on the stack.
  239.  
  240.      For the Vax and 68000, where normally all arguments are pushed,
  241.      zero suffices as a definition.
  242.  
  243.      The usual way to make the ANSI library `stdarg.h' work on a
  244.      machine where some arguments are usually passed in registers, is
  245.      to cause nameless arguments to be passed on the stack instead. 
  246.      This is done by making `FUNCTION_ARG' return 0 whenever NAMED is
  247.      0.
  248.  
  249. `FUNCTION_INCOMING_ARG (CUM, MODE, TYPE, NAMED)'
  250.      Define this macro if the target machine has ``register
  251.      windows'', so that the register in which a function sees an
  252.      arguments is not necessarily the same as the one in which the
  253.      caller passed the argument.
  254.  
  255.      For such machines, `FUNCTION_ARG' computes the register in which
  256.      the caller passes the value, and `FUNCTION_INCOMING_ARG' should
  257.      be defined in a similar fashion to tell the function being
  258.      called where the arguments will arrive.
  259.  
  260.      If `FUNCTION_INCOMING_ARG' is not defined, `FUNCTION_ARG' serves
  261.      both purposes.
  262.  
  263. `FUNCTION_ARG_PARTIAL_NREGS (CUM, MODE, TYPE, NAMED)'
  264.      A C expression for the number of words, at the beginning of an
  265.      argument, must be put in registers.  The value must be zero for
  266.      arguments that are passed entirely in registers or that are
  267.      entirely pushed on the stack.
  268.  
  269.      On some machines, certain arguments must be passed partially in
  270.      registers and partially in memory.  On these machines, typically
  271.      the first N words of arguments are passed in registers, and the
  272.      rest on the stack.  If a multi-word argument (a `double' or a
  273.      structure) crosses that boundary, its first few words must be
  274.      passed in registers and the rest must be pushed.  This macro
  275.      tells the compiler when this occurs, and how many of the words
  276.      should go in registers.
  277.  
  278.      `FUNCTION_ARG' for these arguments should return the first
  279.      register to be used by the caller for this argument; likewise
  280.      `FUNCTION_INCOMING_ARG', for the called function.
  281.  
  282. `CUMULATIVE_ARGS'
  283.      A C type for declaring a variable that is used as the first
  284.      argument of `FUNCTION_ARG' and other related values.  For some
  285.      target machines, the type `int' suffices and can hold the number
  286.      of bytes of argument so far.
  287.  
  288. `INIT_CUMULATIVE_ARGS (CUM, FNTYPE)'
  289.      A C statement (sans semicolon) for initializing the variable CUM
  290.      for the state at the beginning of the argument list.  The
  291.      variable has type `CUMULATIVE_ARGS'.  The value of FNTYPE is the
  292.      tree node for the data type of the function which will receive
  293.      the args, or 0 if the args are to a compiler support library
  294.      function.
  295.  
  296. `FUNCTION_ARG_ADVANCE (CUM, MODE, TYPE, NAMED)'
  297.      A C statement (sans semicolon) to update the summarizer variable
  298.      CUM to advance past an argument in the argument list.  The
  299.      values MODE, TYPE and NAMED describe that argument.  Once this
  300.      is done, the variable CUM is suitable for analyzing the
  301.      *following* argument with `FUNCTION_ARG', etc.
  302.  
  303. `FUNCTION_ARG_REGNO_P (REGNO)'
  304.      A C expression that is nonzero if REGNO is the number of a hard
  305.      register in which function arguments are sometimes passed.  This
  306.      does *not* include implicit arguments such as the static chain
  307.      and the structure-value address.  On many machines, no registers
  308.      can be used for this purpose since all function arguments are
  309.      pushed on the stack.
  310.  
  311. `FUNCTION_ARG_PADDING (MODE, SIZE)'
  312.      If defined, a C expression which determines whether, and in
  313.      which direction, to pad out an argument with extra space.  The
  314.      value should be of type `enum direction': either `upward' to pad
  315.      above the argument, `downward' to pad below, or `none' to
  316.      inhibit padding.
  317.  
  318.      The argument SIZE is an RTX which describes the size of the
  319.      argument, in bytes.  It should be used only if MODE is
  320.      `BLKmode'.  Otherwise, SIZE is 0.
  321.  
  322.      This macro does not control the *amount* of padding; that is
  323.      always just enough to reach the next multiple of `PARM_BOUNDARY'.
  324.  
  325.      This macro has a default definition which is right for most
  326.      systems.  For little-endian machines, the default is to pad
  327.      upward.  For big-endian machines, the default is to pad downward
  328.      for an argument of constant size shorter than an `int', and
  329.      upward otherwise.
  330.  
  331. `FUNCTION_PROLOGUE (FILE, SIZE)'
  332.      A C compound statement that outputs the assembler code for entry
  333.      to a function.  The prologue is responsible for setting up the
  334.      stack frame, initializing the frame pointer register, saving
  335.      registers that must be saved, and allocating SIZE additional
  336.      bytes of storage for the local variables.  SIZE is an integer. 
  337.      FILE is a stdio stream to which the assembler code should be
  338.      output.
  339.  
  340.      The label for the beginning of the function need not be output
  341.      by this macro.  That has already been done when the macro is run.
  342.  
  343.      To determine which registers to save, the macro can refer to the
  344.      array `regs_ever_live': element R is nonzero if hard register R
  345.      is used anywhere within the function.  This implies the function
  346.      prologue should save register R, but not if it is one of the
  347.      call-used registers.
  348.  
  349.      On machines where functions may or may not have frame-pointers,
  350.      the function entry code must vary accordingly; it must set up
  351.      the frame pointer if one is wanted, and not otherwise.  To
  352.      determine whether a frame pointer is in wanted, the macro can
  353.      refer to the variable `frame_pointer_needed'.  The variable's
  354.      value will be 1 at run time in a function that needs a frame
  355.      pointer.
  356.  
  357.      On machines where arguments may be passed in registers, and not
  358.      have stack space allocated, this macro must examine the variable
  359.      `current_function_pretend_args_size', and allocate that many
  360.      bytes of uninitialized space on the stack just underneath the
  361.      first argument arriving on the stack.  (This may not be at the
  362.      very end of the stack, if the calling sequence has pushed
  363.      anything else since pushing the stack arguments.  But usually,
  364.      on such machines, nothing else has been pushed yet, because the
  365.      function prologue itself does all the pushing.)
  366.  
  367.      This ``pretend argument'' space is allocated in functions that
  368.      use the ANSI library `stdarg.h' to accept anonymous arguments of
  369.      unspecified types; the last named argument is copied into the
  370.      space, so that the anonymous arguments follow it consecutively.
  371.  
  372. `FUNCTION_PROFILER (FILE, LABELNO)'
  373.      A C statement or compound statement to output to FILE some
  374.      assembler code to call the profiling subroutine `mcount'. 
  375.      Before calling, the assembler code must load the address of a
  376.      counter variable into a register where `mcount' expects to find
  377.      the address.  The name of this variable is `LP' followed by the
  378.      number LABELNO, so you would generate the name using `LP%d' in a
  379.      `fprintf'.
  380.  
  381.      The details of how the address should be passed to `mcount' are
  382.      determined by your operating system environment, not by GNU CC. 
  383.      To figure them out, compile a small program for profiling using
  384.      the system's installed C compiler and look at the assembler code
  385.      that results.
  386.  
  387. `FUNCTION_BLOCK_PROFILER (FILE, LABELNO)'
  388.      A C statement or compound statement to output to FILE some
  389.      assembler code to initialize basic-block profiling for the
  390.      current object module.  This code should call the subroutine
  391.      `__bb_init_func' once per object module, passing it as its sole
  392.      argument the address of a block allocated in the object module.
  393.  
  394.      The name of the block is a local symbol made with this statement:
  395.  
  396.           ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 0);
  397.  
  398.      Of course, since you are writing the definition of
  399.      `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you
  400.      can take a short cut in the definition of this macro and use the
  401.      name that you know will result.
  402.  
  403.      The first word of this block is a flag which will be nonzero if
  404.      the object module has already been initialized.  So test this
  405.      word first, and do not call `__bb_init_func' if the flag is
  406.      nonzero.
  407.  
  408. `BLOCK_PROFILER (FILE, BLOCKNO)'
  409.      A C statement or compound statement to increment the count
  410.      associated with the basic block number BLOCKNO.  Basic blocks
  411.      are numbered separately from zero within each compilation.  The
  412.      count associated with block number BLOCKNO is at index BLOCKNO
  413.      in a vector of words; the name of this array is a local symbol
  414.      made with this statement:
  415.  
  416.           ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 2);
  417.  
  418.      Of course, since you are writing the definition of
  419.      `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you
  420.      can take a short cut in the definition of this macro and use the
  421.      name that you know will result.
  422.  
  423. `EXIT_IGNORES_STACK'
  424.      Define this macro as a C expression that is nonzero if the
  425.      return instruction or the function epilogue ignores the value of
  426.      the stack pointer; in other words, if it is safe to delete an
  427.      instruction to adjust the stack pointer before a return from the
  428.      function.
  429.  
  430.      Note that this macro's value is relevant only for functions for
  431.      which frame pointers are maintained.  It is never safe to delete
  432.      a final stack adjustment in a function that has no frame
  433.      pointer, and the compiler knows this regardless of
  434.      `EXIT_IGNORES_STACK'.
  435.  
  436. `FUNCTION_EPILOGUE (FILE, SIZE)'
  437.      A C compound statement that outputs the assembler code for exit
  438.      from a function.  The epilogue is responsible for restoring the
  439.      saved registers and stack pointer to their values when the
  440.      function was called, and returning control to the caller.  This
  441.      macro takes the same arguments as the macro `FUNCTION_PROLOGUE',
  442.      and the registers to restore are determined from
  443.      `regs_ever_live' and `CALL_USED_REGISTERS' in the same way.
  444.  
  445.      On some machines, there is a single instruction that does all
  446.      the work of returning from the function.  On these machines,
  447.      give that instruction the name `return' and do not define the
  448.      macro `FUNCTION_EPILOGUE' at all.
  449.  
  450.      Do not define a pattern named `return' if you want the
  451.      `FUNCTION_EPILOGUE' to be used.  If you want the target switches
  452.      to control whether return instructions or epilogues are used,
  453.      define a `return' pattern with a validity condition that tests
  454.      the target switches appropriately.  If the `return' pattern's
  455.      validity condition is false, epilogues will be used.
  456.  
  457.      On machines where functions may or may not have frame-pointers,
  458.      the function exit code must vary accordingly.  Sometimes the
  459.      code for these two cases is completely different.  To determine
  460.      whether a frame pointer is in wanted, the macro can refer to the
  461.      variable `frame_pointer_needed'.  The variable's value will be 1
  462.      at run time in a function that needs a frame pointer.
  463.  
  464.      On some machines, some functions pop their arguments on exit
  465.      while others leave that for the caller to do.  For example, the
  466.      68020 when given `-mrtd' pops arguments in functions that take a
  467.      fixed number of arguments.
  468.  
  469.      Your definition of the macro `RETURN_POPS_ARGS' decides which
  470.      functions pop their own arguments.  `FUNCTION_EPILOGUE' needs to
  471.      know what was decided.  The variable
  472.      `current_function_pops_args' is nonzero if the function should
  473.      pop its own arguments.  If so, use the variable
  474.      `current_function_args_size' as the number of bytes to pop.
  475.  
  476. `FIX_FRAME_POINTER_ADDRESS (ADDR, DEPTH)'
  477.      A C compound statement to alter a memory address that uses the
  478.      frame pointer register so that it uses the stack pointer
  479.      register instead.  This must be done in the instructions that
  480.      load parameter values into registers, when the reload pass
  481.      determines that a frame pointer is not necessary for the
  482.      function.  ADDR will be a C variable name, and the updated
  483.      address should be stored in that variable.  DEPTH will be the
  484.      current depth of stack temporaries (number of bytes of arguments
  485.      currently pushed).  The change in offset between a
  486.      frame-pointer-relative address and a stack-pointer-relative
  487.      address must include DEPTH.
  488.  
  489.      Even if your machine description specifies there will always be
  490.      a frame pointer in the frame pointer register, you must still
  491.      define `FIX_FRAME_POINTER_ADDRESS', but the definition will
  492.      never be executed at run time, so it may be empty.
  493.  
  494. `LONGJMP_RESTORE_FROM_STACK'
  495.      Define this macro if the `longjmp' function restores registers
  496.      from the stack frames, rather than from those saved specifically
  497.      by `setjmp'.  Certain quantities must not be kept in registers
  498.      across a call to `setjmp' on such machines.
  499.  
  500.  
  501. 
  502. File: gcc.info,  Node: Library Names,  Next: Addressing Modes,  Prev: Stack Layout,  Up: Machine Macros
  503.  
  504. Library Subroutine Names
  505. ========================
  506.  
  507. `MULSI3_LIBCALL'
  508.      A C string constant giving the name of the function to call for
  509.      multiplication of one signed full-word by another.  If you do
  510.      not define this macro, the default name is used, which is
  511.      `__mulsi3', a function defined in `gnulib'.
  512.  
  513. `UMULSI3_LIBCALL'
  514.      A C string constant giving the name of the function to call for
  515.      multiplication of one unsigned full-word by another.  If you do
  516.      not define this macro, the default name is used, which is
  517.      `__umulsi3', a function defined in `gnulib'.
  518.  
  519. `DIVSI3_LIBCALL'
  520.      A C string constant giving the name of the function to call for
  521.      division of one signed full-word by another.  If you do not
  522.      define this macro, the default name is used, which is
  523.      `__divsi3', a function defined in `gnulib'.
  524.  
  525. `UDIVSI3_LIBCALL'
  526.      A C string constant giving the name of the function to call for
  527.      division of one unsigned full-word by another.  If you do not
  528.      define this macro, the default name is used, which is
  529.      `__udivsi3', a function defined in `gnulib'.
  530.  
  531. `MODSI3_LIBCALL'
  532.      A C string constant giving the name of the function to call for
  533.      the remainder in division of one signed full-word by another. 
  534.      If you do not define this macro, the default name is used, which
  535.      is `__modsi3', a function defined in `gnulib'.
  536.  
  537. `UMODSI3_LIBCALL'
  538.      A C string constant giving the name of the function to call for
  539.      the remainder in division of one unsigned full-word by another. 
  540.      If you do not define this macro, the default name is used, which
  541.      is `__umodsi3', a function defined in `gnulib'.
  542.  
  543. `TARGET_MEM_FUNCTIONS'
  544.      Define this macro if GNU CC should generate calls to the System
  545.      V (and ANSI C) library functions `memcpy' and `memset' rather
  546.      than the BSD functions `bcopy' and `bzero'.
  547.  
  548.  
  549. 
  550. File: gcc.info,  Node: Addressing Modes,  Next: Delayed Branch,  Prev: Library Names,  Up: Machine Macros
  551.  
  552. Addressing Modes
  553. ================
  554.  
  555. `HAVE_POST_INCREMENT'
  556.      Define this macro if the machine supports post-increment
  557.      addressing.
  558.  
  559. `HAVE_PRE_INCREMENT'
  560. `HAVE_POST_DECREMENT'
  561. `HAVE_PRE_DECREMENT'
  562.      Similar for other kinds of addressing.
  563.  
  564. `CONSTANT_ADDRESS_P (X)'
  565.      A C expression that is 1 if the RTX X is a constant whose value
  566.      is an integer.  This includes integers whose values are not
  567.      explicitly known, such as `symbol_ref' and `label_ref'
  568.      expressions and `const' arithmetic expressions.
  569.  
  570.      On most machines, this can be defined as `CONSTANT_P (X)', but a
  571.      few machines are more restrictive in which constant addresses
  572.      are supported.
  573.  
  574. `MAX_REGS_PER_ADDRESS'
  575.      A number, the maximum number of registers that can appear in a
  576.      valid memory address.
  577.  
  578. `GO_IF_LEGITIMATE_ADDRESS (MODE, X, LABEL)'
  579.      A C compound statement with a conditional `goto LABEL;' executed
  580.      if X (an RTX) is a legitimate memory address on the target
  581.      machine for a memory operand of mode MODE.
  582.  
  583.      It usually pays to define several simpler macros to serve as
  584.      subroutines for this one.  Otherwise it may be too complicated
  585.      to understand.
  586.  
  587.      This macro must exist in two variants: a strict variant and a
  588.      non-strict one.  The strict variant is used in the reload pass. 
  589.      It must be defined so that any pseudo-register that has not been
  590.      allocated a hard register is considered a memory reference.  In
  591.      contexts where some kind of register is required, a
  592.      pseudo-register with no hard register must be rejected.
  593.  
  594.      The non-strict variant is used in other passes.  It must be
  595.      defined to accept all pseudo-registers in every context where
  596.      some kind of register is required.
  597.  
  598.      Compiler source files that want to use the strict variant of
  599.      this macro define the macro `REG_OK_STRICT'.  You should use an
  600.      `#ifdef REG_OK_STRICT' conditional to define the strict variant
  601.      in that case and the non-strict variant otherwise.
  602.  
  603.      Typically among the subroutines used to define
  604.      `GO_IF_LEGITIMATE_ADDRESS' are subroutines to check for
  605.      acceptable registers for various purposes (one for base
  606.      registers, one for index registers, and so on).  Then only these
  607.      subroutine macros need have two variants; the higher levels of
  608.      macros may be the same whether strict or not.
  609.  
  610.      Normally, constant addresses which are the sum of a `symbol_ref'
  611.      and an integer are stored inside a `const' RTX to mark them as
  612.      constant.  Therefore, there is no need to recognize such sums as
  613.      legitimate addresses.
  614.  
  615.      Usually `PRINT_OPERAND_ADDRESS' is not prepared to handle
  616.      constant sums that are not marked with  `const'.  It assumes
  617.      that a naked `plus' indicates indexing.  If so, then you *must*
  618.      reject such naked constant sums as illegitimate addresses, so
  619.      that none of them will be given to `PRINT_OPERAND_ADDRESS'.
  620.  
  621. `REG_OK_FOR_BASE_P (X)'
  622.      A C expression that is nonzero if X (assumed to be a `reg' RTX)
  623.      is valid for use as a base register.  For hard registers, it
  624.      should always accept those which the hardware permits and reject
  625.      the others.  Whether the macro accepts or rejects pseudo
  626.      registers must be controlled by `REG_OK_STRICT' as described
  627.      above.  This usually requires two variant definitions, of which
  628.      `REG_OK_STRICT' controls the one actually used.
  629.  
  630. `REG_OK_FOR_INDEX_P (X)'
  631.      A C expression that is nonzero if X (assumed to be a `reg' RTX)
  632.      is valid for use as an index register.
  633.  
  634.      The difference between an index register and a base register is
  635.      that the index register may be scaled.  If an address involves
  636.      the sum of two registers, neither one of them scaled, then
  637.      either one may be labeled the ``base'' and the other the
  638.      ``index''; but whichever labeling is used must fit the machine's
  639.      constraints of which registers may serve in each capacity.  The
  640.      compiler will try both labelings, looking for one that is valid,
  641.      and will reload one or both registers only if neither labeling
  642.      works.
  643.  
  644. `LEGITIMIZE_ADDRESS (X, OLDX, MODE, WIN)'
  645.      A C compound statement that attempts to replace X with a valid
  646.      memory address for an operand of mode MODE.  WIN will be a C
  647.      statement label elsewhere in the code; the macro definition may
  648.      use
  649.  
  650.           GO_IF_LEGITIMATE_ADDRESS (MODE, X, WIN);
  651.  
  652.      to avoid further processing if the address has become legitimate.
  653.  
  654.      X will always be the result of a call to
  655.      `break_out_memory_refs', and OLDX will be the operand that was
  656.      given to that function to produce X.
  657.  
  658.      The code generated by this macro should not alter the
  659.      substructure of X.  If it transforms X into a more legitimate
  660.      form, it should assign X (which will always be a C variable) a
  661.      new value.
  662.  
  663.      It is not necessary for this macro to come up with a legitimate
  664.      address.  The compiler has standard ways of doing so in all
  665.      cases.  In fact, it is safe for this macro to do nothing.  But
  666.      often a machine-dependent strategy can generate better code.
  667.  
  668. `GO_IF_MODE_DEPENDENT_ADDRESS (ADDR, LABEL)'
  669.      A C statement or compound statement with a conditional `goto
  670.      LABEL;' executed if memory address X (an RTX) can have different
  671.      meanings depending on the machine mode of the memory reference
  672.      it is used for.
  673.  
  674.      Autoincrement and autodecrement addresses typically have
  675.      mode-dependent effects because the amount of the increment or
  676.      decrement is the size of the operand being addressed.  Some
  677.      machines have other mode-dependent addresses.  Many RISC
  678.      machines have no mode-dependent addresses.
  679.  
  680.      You may assume that ADDR is a valid address for the machine.
  681.  
  682. `LEGITIMATE_CONSTANT_P (X)'
  683.      A C expression that is nonzero if X is a legitimate constant for
  684.      an immediate operand on the target machine.  You can assume that
  685.      either X is a `const_double' or it satisfies `CONSTANT_P', so
  686.      you need not check these things.  In fact, `1' is a suitable
  687.      definition for this macro on machines where any `const_double'
  688.      is valid and anything `CONSTANT_P' is valid.
  689.  
  690.  
  691. 
  692. File: gcc.info,  Node: Delayed Branch,  Next: Condition Code,  Prev: Addressing Modes,  Up: Machine Macros
  693.  
  694. Parameters for Delayed Branch Optimization
  695. ==========================================
  696.  
  697. `HAVE_DELAYED_BRANCH'
  698.      Define this macro if the target machine has delayed branches,
  699.      that is, a branch does not take effect immediately, and the
  700.      actual branch instruction may be followed by one or more
  701.      instructions that will be issued before the PC is actually
  702.      changed.
  703.  
  704.      If defined, this allows a special scheduling pass to be run
  705.      after the second jump optimization to attempt to reorder
  706.      instructions to exploit this.  Defining this macro also requires
  707.      the definition of certain other macros described below.
  708.  
  709. `DBR_SLOTS_AFTER (INSN)'
  710.      This macro must be defined if `HAVE_DELAYED_BRANCH' is defined. 
  711.      Its definition should be a C expression returning the number of
  712.      available delay slots following the instruction(s) output by the
  713.      pattern for INSN.  The definition of ``slot'' is
  714.      machine-dependent, and may denote instructions, bytes, or
  715.      whatever.
  716.  
  717. `DBR_INSN_SLOTS (INSN)'
  718.      This macro must be defined if `HAVE_DELAYED_BRANCH' is defined. 
  719.      It should be a C expression returning the number of slots
  720.      (typically the number of machine instructions) consumed by INSN.
  721.  
  722.      You may assume that INSN is truly an insn, not a note, label,
  723.      barrier, dispatch table, `use', or `clobber'.
  724.  
  725. `DBR_INSN_ELIGIBLE_P (INSN, DINSN)'
  726.      A C expression whose value is non-zero if it is legitimate to
  727.      put INSN in the delay slot following DINSN.
  728.  
  729.      You do not need to take account of data flow considerations in
  730.      the definition of this macro, because the delayed branch
  731.      optimizer always does that.  This macro is needed only when
  732.      certain insns may not be placed in certain delay slots for
  733.      reasons not evident from the RTL expressions themselves.  If
  734.      there are no such problems, you don't need to define this macro.
  735.  
  736.      You may assume that INSN is truly an insn, not a note, label,
  737.      barrier, dispatch table, `use', or `clobber'.  You may assume
  738.      that DINSN is a jump insn with a delay slot.
  739.  
  740. `DBR_OUTPUT_SEQEND(FILE)'
  741.      A C statement, to be executed after all slot-filler instructions
  742.      have been output.  If necessary, call `dbr_sequence_length' to
  743.      determine the number of slots filled in a sequence (zero if not
  744.      currently outputting a sequence), to decide how many no-ops to
  745.      output, or whatever.
  746.  
  747.      Don't define this macro if it has nothing to do, but it is
  748.      helpful in reading assembly output if the extent of the delay
  749.      sequence is made explicit (e.g. with white space).
  750.  
  751.      Note that output routines for instructions with delay slots must
  752.      be prepared to deal with not being output as part of a sequence
  753.      (i.e.  when the scheduling pass is not run, or when no slot
  754.      fillers could be found.)  The variable `final_sequence' is null
  755.      when not processing a sequence, otherwise it contains the
  756.      `sequence' rtx being output.
  757.  
  758.  
  759. 
  760. File: gcc.info,  Node: Condition Code,  Next: Cross-compilation,  Prev: Delayed Branch,  Up: Machine Macros
  761.  
  762. Condition Code Information
  763. ==========================
  764.  
  765. The file `conditions.h' defines a variable `cc_status' to describe
  766. how the condition code was computed (in case the interpretation of
  767. the condition code depends on the instruction that it was set by). 
  768. This variable contains the RTL expressions on which the condition
  769. code is currently based, and several standard flags.
  770.  
  771. Sometimes additional machine-specific flags must be defined in the
  772. machine description header file.  It can also add additional
  773. machine-specific information by defining `CC_STATUS_MDEP'.
  774.  
  775. `CC_STATUS_MDEP'
  776.      C code for a data type which is used for declaring the `mdep'
  777.      component of `cc_status'.  It defaults to `int'.
  778.  
  779. `CC_STATUS_MDEP_INIT'
  780.      A C expression to initialize the `mdep' field to ``empty''.  The
  781.      default definition does nothing, since most machines don't use
  782.      the field anyway.  If you want to use the field, you should
  783.      probably define this macro to initialize it.
  784.  
  785. `NOTICE_UPDATE_CC (EXP, INSN)'
  786.      A C compound statement to set the components of `cc_status'
  787.      appropriately for an insn INSN whose body is EXP.  It is this
  788.      macro's responsibility to recognize insns that set the condition
  789.      code as a byproduct of other activity as well as those that
  790.      explicitly set `(cc0)'.
  791.  
  792.      If there are insn that do not set the condition code but do
  793.      alter other machine registers, this macro must check to see
  794.      whether they invalidate the expressions that the condition code
  795.      is recorded as reflecting.  For example, on the 68000, insns
  796.      that store in address registers do not set the condition code,
  797.      which means that usually `NOTICE_UPDATE_CC' can leave
  798.      `cc_status' unaltered for such insns.  But suppose that the
  799.      previous insn set the condition code based on location
  800.      `a4@(102)' and the current insn stores a new value in `a4'. 
  801.      Although the condition code is not changed by this, it will no
  802.      longer be true that it reflects the contents of `a4@(102)'. 
  803.      Therefore, `NOTICE_UPDATE_CC' must alter `cc_status' in this
  804.      case to say that nothing is known about the condition code value.
  805.  
  806.      The definition of `NOTICE_UPDATE_CC' must be prepared to deal
  807.      with the results of peephole optimization: insns whose patterns
  808.      are `parallel' RTXs containing various `reg', `mem' or constants
  809.      which are just the operands.  The RTL structure of these insns
  810.      is not sufficient to indicate what the insns actually do.  What
  811.      `NOTICE_UPDATE_CC' should do when it sees one is just to run
  812.      `CC_STATUS_INIT'.
  813.  
  814.  
  815. 
  816. File: gcc.info,  Node: Cross-compilation,  Next: Misc,  Prev: Condition Code,  Up: Machine Macros
  817.  
  818. Cross Compilation and Floating-Point Format
  819. ===========================================
  820.  
  821. While all modern machines use 2's complement representation for
  822. integers, there are a variety of representations for floating point
  823. numbers.  This means that in a cross-compiler the representation of
  824. floating point numbers in the compiled program may be different from
  825. that used in the machine doing the compilation.
  826.  
  827. Because different representation systems may offer different amounts
  828. of range and precision, the cross compiler cannot safely use the host
  829. machine's floating point arithmetic.  Therefore, floating point
  830. constants must be represented in the target machine's format.  This
  831. means that the cross compiler cannot use `atof' to parse a floating
  832. point constant; it must have its own special routine to use instead. 
  833. Also, constant folding must emulate the target machine's arithmetic
  834. (or must not be done at all).
  835.  
  836. The macros in the following table should be defined only if you are
  837. cross compiling between different floating point formats.
  838.  
  839. Otherwise, don't define them. Then default definitions will be set up
  840. which use `double' as the data type, `==' to test for equality, etc.
  841.  
  842. You don't need to worry about how many times you use an operand of
  843. any of these macros.  The compiler never uses operands which have
  844. side effects.
  845.  
  846. `REAL_VALUE_TYPE'
  847.      A macro for the C data type to be used to hold a floating point
  848.      value in the target machine's format.  Typically this would be a
  849.      `struct' containing an array of `int'.
  850.  
  851. `REAL_VALUES_EQUAL (X, Y)'
  852.      A macro for a C expression which compares for equality the two
  853.      values, X and Y, both of type `REAL_VALUE_TYPE'.
  854.  
  855. `REAL_VALUES_LESS (X, Y)'
  856.      A macro for a C expression which tests whether X is less than Y,
  857.      both values being of type `REAL_VALUE_TYPE' and interpreted as
  858.      floating point numbers in the target machine's representation.
  859.  
  860. `REAL_VALUE_LDEXP (X, SCALE)'
  861.      A macro for a C expression which performs the standard library
  862.      function `ldexp', but using the target machine's floating point
  863.      representation.  Both X and the value of the expression have
  864.      type `REAL_VALUE_TYPE'.  The second argument, SCALE, is an
  865.      integer.
  866.  
  867. `REAL_VALUE_ATOF (STRING)'
  868.      A macro for a C expression which converts STRING, an expression
  869.      of type `char *', into a floating point number in the target
  870.      machine's representation.  The value has type `REAL_VALUE_TYPE'.
  871.  
  872. Define the following additional macros if you want to make floating
  873. point constant folding work while cross compiling.  If you don't
  874. define them, cross compilation is still possible, but constant
  875. folding will not happen for floating point values.
  876.  
  877. `REAL_ARITHMETIC (OUTPUT, CODE, X, Y)'
  878.      A macro for a C statement which calculates an arithmetic
  879.      operation of the two floating point values X and Y, both of type
  880.      `REAL_VALUE_TYPE' in the target machine's representation, to
  881.      produce a result of the same type and representation which is
  882.      stored in OUTPUT (which will be a variable).
  883.  
  884.      The operation to be performed is specified by CODE, a tree code
  885.      which will always be one of the following: `PLUS_EXPR',
  886.      `MINUS_EXPR', `MULT_EXPR', `RDIV_EXPR', `MAX_EXPR', `MIN_EXPR'.
  887.  
  888.      The expansion of this macro is responsible for checking for
  889.      overflow.  If overflow happens, the macro expansion should
  890.      execute the statement `return 0;', which indicates the inability
  891.      to perform the arithmetic operation requested.
  892.  
  893. `REAL_VALUE_NEGATE (X)'
  894.      A macro for a C expression which returns the negative of the
  895.      floating point value X.  Both X and the value of the expression
  896.      have type `REAL_VALUE_TYPE' and are in the target machine's
  897.      floating point representation.
  898.  
  899.      There is no way for this macro to report overflow, since
  900.      overflow can't happen in the negation operation.
  901.  
  902. `REAL_VALUE_TO_INT (LOW, HIGH, X)'
  903.      A macro for a C expression which converts a floating point value
  904.      X into a double-precision integer which is then stored into LOW
  905.      and HIGH, two variables of type INT.
  906.  
  907. `REAL_VALUE_FROM_INT (X, LOW, HIGH)'
  908.      A macro for a C expression which converts a double-precision
  909.      integer found in LOW and HIGH, two variables of type INT, into a
  910.      floating point value which is then stored into X.
  911.  
  912.  
  913. 
  914. File: gcc.info,  Node: Misc,  Next: Assembler Format,  Prev: Cross-compilation,  Up: Machine Macros
  915.  
  916. Miscellaneous Parameters
  917. ========================
  918.  
  919. `CASE_VECTOR_MODE'
  920.      An alias for a machine mode name.  This is the machine mode that
  921.      elements of a jump-table should have.
  922.  
  923. `CASE_VECTOR_PC_RELATIVE'
  924.      Define this macro if jump-tables should contain relative
  925.      addresses.
  926.  
  927. `CASE_DROPS_THROUGH'
  928.      Define this if control falls through a `case' insn when the
  929.      index value is out of range.  This means the specified
  930.      default-label is actually ignored by the `case' insn proper.
  931.  
  932. `IMPLICIT_FIX_EXPR'
  933.      An alias for a tree code that should be used by default for
  934.      conversion of floating point values to fixed point.  Normally,
  935.      `FIX_ROUND_EXPR' is used.
  936.  
  937. `FIXUNS_TRUNC_LIKE_FIX_TRUNC'
  938.      Define this macro if the same instructions that convert a
  939.      floating point number to a signed fixed point number also
  940.      convert validly to an unsigned one.
  941.  
  942. `EASY_DIV_EXPR'
  943.      An alias for a tree code that is the easiest kind of division to
  944.      compile code for in the general case.  It may be
  945.      `TRUNC_DIV_EXPR', `FLOOR_DIV_EXPR', `CEIL_DIV_EXPR' or
  946.      `ROUND_DIV_EXPR'.  These four division operators differ in how
  947.      they round the result to an integer.  `EASY_DIV_EXPR' is used
  948.      when it is permissible to use any of those kinds of division and
  949.      the choice should be made on the basis of efficiency.
  950.  
  951. `DEFAULT_SIGNED_CHAR'
  952.      An expression whose value is 1 or 0, according to whether the
  953.      type `char' should be signed or unsigned by default.  The user
  954.      can always override this default with the options
  955.      `-fsigned-char' and `-funsigned-char'.
  956.  
  957. `SCCS_DIRECTIVE'
  958.      Define this if the preprocessor should ignore `#sccs' directives
  959.      and print no error message.
  960.  
  961. `HAVE_VPRINTF'
  962.      Define this if the library function `vprintf' is available on
  963.      your system.
  964.  
  965. `MOVE_MAX'
  966.      The maximum number of bytes that a single instruction can move
  967.      quickly from memory to memory.
  968.  
  969. `INT_TYPE_SIZE'
  970.      A C expression for the size in bits of the type `int' on the
  971.      target machine.  If you don't define this, the default is one
  972.      word.
  973.  
  974. `SHORT_TYPE_SIZE'
  975.      A C expression for the size in bits of the type `short' on the
  976.      target machine.  If you don't define this, the default is half a
  977.      word.  (If this would be less than one storage unit, it is
  978.      rounded up to one unit.)
  979.  
  980. `LONG_TYPE_SIZE'
  981.      A C expression for the size in bits of the type `long' on the
  982.      target machine.  If you don't define this, the default is one
  983.      word.
  984.  
  985. `LONG_LONG_TYPE_SIZE'
  986.      A C expression for the size in bits of the type `long long' on
  987.      the target machine.  If you don't define this, the default is
  988.      two words.
  989.  
  990. `CHAR_TYPE_SIZE'
  991.      A C expression for the size in bits of the type `char' on the
  992.      target machine.  If you don't define this, the default is one
  993.      quarter of a word.  (If this would be less than one storage
  994.      unit, it is rounded up to one unit.)
  995.  
  996. `FLOAT_TYPE_SIZE'
  997.      A C expression for the size in bits of the type `float' on the
  998.      target machine.  If you don't define this, the default is one
  999.      word.
  1000.  
  1001. `DOUBLE_TYPE_SIZE'
  1002.      A C expression for the size in bits of the type `double' on the
  1003.      target machine.  If you don't define this, the default is two
  1004.      words.
  1005.  
  1006. `LONG_DOUBLE_TYPE_SIZE'
  1007.      A C expression for the size in bits of the type `long double' on
  1008.      the target machine.  If you don't define this, the default is
  1009.      two words.
  1010.  
  1011. `SLOW_BYTE_ACCESS'
  1012.      Define this macro as a C expression which is nonzero if
  1013.      accessing less than a word of memory (i.e. a `char' or a
  1014.      `short') is slow (requires more than one instruction).
  1015.  
  1016. `SLOW_ZERO_EXTEND'
  1017.      Define this macro if zero-extension (of a `char' or `short' to
  1018.      an `int') can be done faster if the destination is a register
  1019.      that is known to be zero.
  1020.  
  1021.      If you define this macro, you must have instruction patterns
  1022.      that recognize RTL structures like this:
  1023.  
  1024.           (set (strict-low-part (subreg:QI (reg:SI ...) 0)) ...)
  1025.  
  1026.      and likewise for `HImode'.
  1027.  
  1028. `SHIFT_COUNT_TRUNCATED'
  1029.      Define this macro if shift instructions ignore all but the
  1030.      lowest few bits of the shift count.  It implies that a
  1031.      sign-extend or zero-extend instruction for the shift count can
  1032.      be omitted.
  1033.  
  1034. `TRULY_NOOP_TRUNCATION (OUTPREC, INPREC)'
  1035.      A C expression which is nonzero if on this machine it is safe to
  1036.      ``convert'' an integer of INPREC bits to one of OUTPREC bits
  1037.      (where OUTPREC is smaller than INPREC) by merely operating on it
  1038.      as if it had only OUTPREC bits.
  1039.  
  1040.      On many machines, this expression can be 1.
  1041.  
  1042. `NO_FUNCTION_CSE'
  1043.      Define this macro if it is as good or better to call a constant
  1044.      function address than to call an address kept in a register.
  1045.  
  1046. `PROMOTE_PROTOTYPES'
  1047.      Define this macro if an argument declared as `char' or `short'
  1048.      in a prototype should actually be passed as an `int'.  In
  1049.      addition to avoiding errors in certain cases of mismatch, it
  1050.      also makes for better code on certain machines.
  1051.  
  1052. `STORE_FLAG_VALUE'
  1053.      A C expression for the value stored by a store-flag instruction
  1054.      (`sCOND') when the condition is true.  This is usually 1 or -1;
  1055.      it is required to be an odd number or a negative number.
  1056.  
  1057.      Do not define `STORE_FLAG_VALUE' if the machine has no
  1058.      store-flag instructions.
  1059.  
  1060. `Pmode'
  1061.      An alias for the machine mode for pointers.  Normally the
  1062.      definition can be
  1063.  
  1064.           #define Pmode SImode
  1065.  
  1066. `FUNCTION_MODE'
  1067.      An alias for the machine mode used for memory references to
  1068.      functions being called, in `call' RTL expressions.  On most
  1069.      machines this should be `QImode'.
  1070.  
  1071. `INSN_MACHINE_INFO'
  1072.      This macro should expand into a C structure type to use for the
  1073.      machine-dependent info field specified with the optional last
  1074.      argument in `define_insn' and `define_peephole' patterns.  For
  1075.      example, it might expand into `struct machine_info'; then it
  1076.      would be up to you to define this structure in the `tm.h' file.
  1077.  
  1078.      You do not need to define this macro if you do not write the
  1079.      optional last argument in any of the patterns in the machine
  1080.      description.
  1081.  
  1082. `DEFAULT_MACHINE_INFO'
  1083.      This macro should expand into a C initializer to use to
  1084.      initialize the machine-dependent info for one insn pattern.  It
  1085.      is used for patterns that do not specify the machine-dependent
  1086.      info.
  1087.  
  1088.      If you do not define this macro, zero is used.
  1089.  
  1090. `CONST_COSTS (X, CODE)'
  1091.      A part of a C `switch' statement that describes the relative
  1092.      costs of constant RTL expressions.  It must contain `case'
  1093.      labels for expression codes `const_int', `const', `symbol_ref',
  1094.      `label_ref' and `const_double'.  Each case must ultimately reach
  1095.      a `return' statement to return the relative cost of the use of
  1096.      that kind of constant value in an expression.  The cost may
  1097.      depend on the precise value of the constant, which is available
  1098.      for examination in X.
  1099.  
  1100.      CODE is the expression code--redundant, since it can be obtained
  1101.      with `GET_CODE (X)'.
  1102.  
  1103. `DOLLARS_IN_IDENTIFIERS'
  1104.      Define this to be nonzero if the character `$' should be allowed
  1105.      by default in identifier names.
  1106.  
  1107. `USE_C_ALLOCA'
  1108.      Define this macro to indicate that the compiler is running with
  1109.      the `alloca' implemented in C.  This version of `alloca' can be
  1110.      found in the file `alloca.c'; to use it, you must also alter the
  1111.      `Makefile' variable `ALLOCA'.
  1112.  
  1113.      This macro, unlike most, describes the machine that the compiler
  1114.      is running on, rather than the one the compiler is compiling for.
  1115.      Therefore, it should be set in the `xm-MACHINE.h' file rather
  1116.      than in the `tm-MACHINE.h' file.
  1117.  
  1118.      If you do define this macro, you should probably do it as follows:
  1119.  
  1120.           #ifndef __GNUC__
  1121.           #define USE_C_ALLOCA
  1122.           #else
  1123.           #define alloca __builtin_alloca
  1124.           #endif
  1125.  
  1126.      so that when the compiler is compiled with GNU CC it uses the
  1127.      more efficient built-in `alloca' function.
  1128.  
  1129.  
  1130.